﻿// *----------------------------------------------------------------
// Copyright (C) 2017 通通优品
// 版权所有。
// 
// 类名：ValidateCodeManager.cs
// 功能描述：TEC.Public.Component.ValidateCode
// 
// Create User：jym 2017/02/09
// 
// Edit User：UserName,EditTime
// Describe：Describe
// ----------------------------------------------------------------*/
using System.Collections.Generic;



namespace TEC.Web.Component.ValidateCode
{
    /// <summary>
    /// 验证码管理者
    /// </summary>
    public class ValidateCodeManager
    {
        IDictionary<string, IValidateCode> validateCode = new Dictionary<string, IValidateCode>();

        /// <summary>
        /// 实例集合
        /// </summary>
        public IDictionary<string, IValidateCode> ValidateCodeDic
        {
            get { return validateCode; }
            set { validateCode = value; }
        }
        /// <summary>
        /// 默认实例
        /// </summary>
        public IValidateCode Default { get; set; }
        //static ValidateImageManager()
        //{
        //    validateCode.Add("default", new QAValidateImage());
        //    //validateCode.Add(ValidateImageKeyName.Type1.ToString().ToLower(), new PubValidateImage1());
        //    //validateCode.Add(ValidateImageKeyName.Type2.ToString().ToLower(), new PubValidateImage2());
        //}
        /// <summary>
        /// 获取指定验证码实例。如果不存在或为空则返回默认实例。
        /// </summary>
        /// <param name="keyname"></param>
        /// <returns></returns>
        public IValidateCode GetValidateImage(string keyname)
        {
            IValidateCode code;
            if (keyname == null)
            {
                if (Default == null) throw new System.Exception("ValidateImageManager.Default == null 未配置默认验证码实例");
                return Default;
            }
            else if (validateCode.TryGetValue(keyname.ToLower(), out code))
            {
                return code;
            }
            else
            {
                //MVCInstance.LoggerHelper.Error(string.Format("GetValidateImage(string keyname)  参数 keyname:{0} 未注册", keyname), null, "ValidateImageManager");
                //if (Default == null) throw new System.Exception("ValidateImageManager.Default == null 未配置默认验证码实例");
                //return Default;
                //throw new System.Exception($"验证码实例“{keyname}”不存在");
                return null;
            }

        }
    }
}
